package lanQiaoBei.数学知识.质数;

import java.io.BufferedReader;
import java.io.InputStreamReader;

/*线性筛法求素数
 1、题目：
给定一个正整数n，请你求出1~n中质数的个数。

输入格式
共一行，包含整数n。

输出格式
共一行，包含一个整数，表示1~n中质数的个数。

数据范围
1≤n≤106
输入样例：
8
输出样例：
4
算法思想：
在埃式筛法中，有的合数会被不同的质数筛多次，会浪费时间，而每个合数的最小质数是唯一的（否则就不是最小质数），所以只需要用每个合数的最小的质数将它筛掉一次 即可O(n)。
* */
public class P4 {
    static BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    final static int N=1000010;
    static int primers[]=new int[N],cnt,n;
    static boolean st[]=new boolean[N];
    static void scan()throws Exception{

    }
    public static void main(String[]args)throws Exception{
           n=Integer.parseInt(br.readLine());
           for(int i=2;i<=n;i++){
               if(!st[i])primers[cnt++]=i;
               for(int j=0;primers[j]<=n/i;j++){
                   st[primers[j]*i]=true;
                   if(i%primers[j]==0)break;
               }
           }
           System.out.print(cnt);
    }
}
